package com.hliushi.adapter.example01;

/**
 * @author: hliushi
 * @date: 2023/2/13 22:25
 **/
public class _Client {

    public static void main(String[] args) {
        // 面临的问题是, 墙上的接口是三项插孔，而电视机实现的是两相插孔，二者无法匹配
        // 客户端无法将两相插孔与三相插孔完成接驳
        // TriplePin triplePinDevice = new TV(); // 接口不安兼容，此处报错「类型不匹配」

        useCommonAdapter();
        useTvAdapterByCombination();
        useTvAdapterByExtends();
    }

    private static void useCommonAdapter() {
        TV dualPinDevice = new TV();                    // 构造两插电视机
        Adapter adapter = new Adapter(dualPinDevice);   // 适配器接驳两端
        // 此处调用的是三插通电标准
        adapter.electrify(PowerPinEnum.FIRE.value, PowerPinEnum.NEUTRAL.value, PowerPinEnum.NEUTRAL.value);
    }

    private static void useTvAdapterByCombination() {
        System.out.println("---------------------------------------------------");
        TriplePin tvAdapter = new TvAdapterByCombination(); // 电视机专属三插适配器插入三项插孔
        // 此处调用的是三插通电标准
        tvAdapter.electrify(PowerPinEnum.FIRE.value, PowerPinEnum.NEUTRAL.value, PowerPinEnum.NEUTRAL.value);
    }

    private static void useTvAdapterByExtends() {
        System.out.println("---------------------------------------------------");
        TriplePin tvAdapter = new TvAdapterByExtends(); // 电视机专属三插适配器插入三项插孔
        // 此处调用的是三插通电标准
        tvAdapter.electrify(PowerPinEnum.FIRE.value, PowerPinEnum.NEUTRAL.value, PowerPinEnum.NEUTRAL.value);
    }
}
